<?php
/* ========================================================
    画像のリサイズ・スクリプト
    
    ■引数：
    $sPath_Image_input: 文字列：変換元（オリジナル）の画像の絶対パス。必ず指定。
    $iWidth_resize: 文字列or数値：変換後の横幅：必ず指定。
    $iHeight_resize: 文字列or数値：変換後の高さ：空の場合は横幅を基準に比率を維持してリサイズ。
    ■戻り値
    TRUE/FALSE ：成功したか否か
   ======================================================== */

/* =============================
	画像のリサイズ関数
   ============================= */
if (!function_exists('fResizeImage')) {
    function fResizeImage($sPath_Image_input,$sPath_Image_output="",$iWidth_resize=0,$iHeight_resize=0){

        if(!File_Exists($sPath_Image_input)){
            return FALSE;
        }
        
        if(Empty($sPath_Image_output)){
            $sPath_Image_output = $sPath_Image_input;
        }

        //オリジナルの画像サイズ取得
        list($iWidth_original,$iHeight_original)=getimagesize($sPath_Image_input);

        //オリジナルの画像のMD5を取得（書き換えされたかのチェック用）
        if(File_Exists($sPath_Image_output)){
            $sTimeStampBefore = Md5_File($sPath_Image_output);
        }
        else{
            $sTimeStampBefore = Md5_File($sPath_Image_input);
        }

    	//横幅の指定がない場合、オリジナルの横幅が900pxより大きい場合は900pxにする
    	if(Empty($iWidth_resize)){
    		$iWidth_resize = $iWidth_original>900 ? 900 : $iWidth_original;
    	}

        //高さの指定がない場合、オリジナルの比率に合わせる。高さのデフォルト設定
        if(Empty($iHeight_resize)){
            $iHeight_resize = round(( $iWidth_resize * $iHeight_original ) / $iWidth_original);
        }

        $aFileInfo = pathinfo($sPath_Image_input); //拡張子を取得

        switch($aFileInfo['extension']){
            case "png":
                $src = @imagecreatefrompng($sPath_Image_input);
                $dst = imagecreatetruecolor($iWidth_resize,$iHeight_resize);
                break;
            case "gif":
                $src = @imagecreatefromgif($sPath_Image_input);
                $dst = imagecreate($iWidth_resize,$iHeight_resize);
                break;
            default:
                $src = @imagecreatefromjpeg($sPath_Image_input);
                $dst = imagecreatetruecolor($iWidth_resize,$iHeight_resize);
        }

        imagecopyresampled($dst,$src,0,0,0,0,$iWidth_resize,$iHeight_resize,$iWidth_original,$iHeight_original);

        switch($aFileInfo['extension']){
            case "png":
                    imagepng($dst,$sPath_Image_output);
                break;
            case "gif":
                    imagegif($dst,$sPath_Image_output);
                break;
            default:
                    imagejpeg($dst,$sPath_Image_output);
                break;
        }

        //作成後の画像のMD5を取得（書き換えされたかのチェック用）
        $sTimeStampAfter  = (File_Exists($sPath_Image_output)) ? (Md5_File($sPath_Image_input)) : ("");

        $bResize = ( ($sTimeStampBefore<>$sTimeStampAfter) and (File_Exists($sPath_Image_output) ) ) ? (TRUE) : (FALSE);

        return $bResize;
    }
}
?>